home *** CD-ROM | disk | FTP | other *** search
/ IRIX Patches 1995 March / SGI IRIX Patches 1995 Mar.iso / relnotes / patchSG0000164 / ch1.z / ch1
Text File  |  1995-03-10  |  13KB  |  397 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        1.  _P_a_t_c_h__S_G_0_0_0_0_1_6_4__R_e_l_e_a_s_e__N_o_t_e
  9.  
  10.        This release note describes patch SG0000164 to Delta/C++ 1.0
  11.        on IRIX 5.2.
  12.  
  13.        1.1  _S_u_p_p_o_r_t_e_d__H_a_r_d_w_a_r_e__P_l_a_t_f_o_r_m_s
  14.  
  15.        This patch contains bug fixes for all platforms.
  16.  
  17.        1.2  _S_u_p_p_o_r_t_e_d__S_o_f_t_w_a_r_e__P_l_a_t_f_o_r_m_s
  18.  
  19.        This patch contains bug fixes for all Irix 5.2 based
  20.        releases.
  21.  
  22.        1.3  _B_u_g_s__F_i_x_e_d__b_y__P_a_t_c_h__S_G_0_0_0_0_1_6_4
  23.  
  24.        This patch contains fixes for the following bugs in
  25.        Delta/C++ 1.0 on IRIX 5.2.  Bug numbers from Silicon
  26.        Graphics bug tracking system are included for reference.
  27.  
  28.        The bug descriptions are grouped together by major category
  29.        for ease of lookup.
  30.  
  31.        _C_o_d_e _G_e_n_e_r_a_t_i_o_n
  32.  
  33.           +o CC lays out virtual base classes incorrectly for many
  34.             complex multiple-inheritance heirarchies (especially
  35.             when the same class is derived along multiple paths,
  36.             some virtually, and some non-virtually).
  37.  
  38.             Symptoms include: Overlapping of member references,
  39.             leading to data corruption; compiler crashes; and other
  40.             signs of incorrect execution.  (228998).
  41.  
  42.           +o The compiler would generate bad virtual tables for a
  43.             case where a class was inherited from along more than
  44.             one path, but was overridden along only a non-leftmost
  45.             path (242778).
  46.  
  47.           +o The compiler would sometimes generate code that called
  48.             a destructor for a temporary even if it was never
  49.             actually constructed (e.g. if the constructor call was
  50.             within a conditional expression) (224032).
  51.  
  52.           +o CC -non_shared programs do not call their static
  53.             initializers (223396).
  54.  
  55.           +o CC -O gets an optimizer crash on a struct which
  56.             contains a single "char" member (221193).
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.           +o The ++ and -- operators generate bad code for "long
  75.             long" variables (221655).
  76.  
  77.           +o The "wide character" type is not properly implemented
  78.             (CC thinks it is 2 bytes long instead of 4) (231456).
  79.  
  80.           +o CC -O causes a backend (uopt) crash when compiling a
  81.             call with 0 parameters to a function that has a "(...)"
  82.             parameter list (no fixed parameters) (249158).
  83.  
  84.           +o CC used to treat 1-bit signed bitfields as unsigned,
  85.             which is different from "cc" and the MIPS conventions
  86.             (222886).
  87.  
  88.           +o CC generates bad assembly when an inline destructor has
  89.             a local variable which also has an inline destructor
  90.             (249416).
  91.  
  92.           +o CC sometimes generates a bad object file when a nested
  93.             class derives from a top-level class, causing linker
  94.             errors ("bad relocation entry") (224832).
  95.  
  96.           +o CC generates a bad object file if the only references
  97.             to a virtual inline destructor are non-virtual
  98.             references (e.g. when destroying arrays of objects of
  99.             that type) (249064).
  100.  
  101.        _S_y_n_t_a_x _A_n_a_l_y_s_i_s
  102.  
  103.           +o CC should only report on an ambiguity at the point of
  104.             use of an ambiguous identifier, not at the point of
  105.             declaration (254050).
  106.  
  107.           +o CC gives an incorrect "ambiguity" error on a class that
  108.             has both an "operator void *()" and an "operator
  109.             structtag *()" where "structtag" is an incomplete type
  110.             (248671).
  111.  
  112.           +o CC gives an incorrect "ambiguity" error on a cast
  113.             operator returning a typedef'ed type (219896).
  114.  
  115.           +o CC sometimes gives an incorrect "ambiguity" error when
  116.             explicitly class- qualifying an inherited identifier
  117.             with a virtual base class that is inherited along
  118.             different paths (254238).
  119.  
  120.           +o NCC bloats up and dies on very large string
  121.             concatenations (100+ KB of strings in thousands of
  122.             pieces). (There is now a much more efficient string
  123.             concatenation algorithm) (221884).
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.           +o CC incorrectly rejects certain float constants that are
  141.             specified to the 6th decimal place; e.g. "0.009775F".
  142.             (229761).
  143.  
  144.           +o CC dies if it sees a derived class with the same name
  145.             as a nested type in one of its base classes (246264).
  146.  
  147.           +o CC bloats and dies if it sees a class constructor take
  148.             a parameter of the same type by value (as opposed to a
  149.             pointer or reference) (248259).
  150.  
  151.           +o CC crashes on a switch statement with a switch
  152.             expression that is a function call cast to some type
  153.             (248646).
  154.  
  155.           +o CC crashes on a bogus declaration of the form "char c =
  156.             c;" (221883).
  157.  
  158.           +o The compiler gives an error if a conversion operator
  159.             returns the same type that it is a member of (or a
  160.             reference to it, or to one of its base types).  It
  161.             should only warn about this and refuse to use such a
  162.             conversion operator (244502).
  163.  
  164.           +o CC sometimes gives a spurious "template" syntax error
  165.             on a "<" expression, if the term preceding it is a
  166.             member of a struct that has the same name as a global
  167.             type (250162).
  168.  
  169.           +o NCC -w does not suppress warnings for .i (already
  170.             preprocessed) files (218471).
  171.  
  172.        _T_e_m_p_l_a_t_e _I_n_s_t_a_n_t_i_a_t_i_o_n
  173.  
  174.           +o The compiler goes off into an infinite "instantiation
  175.             loop" for certain templates (especially some of the
  176.             Rogue Wave templates), repeatedly instantiating and
  177.             deleting a template instance (242258).
  178.  
  179.           +o The compiler would abort if an overloaded template
  180.             function is instantiatied with an actual type argument
  181.             that is itself a const-qualified template type
  182.             instantiation (253857).
  183.  
  184.           +o The compiler would generate a "weak" symbol even for an
  185.             uninstantiated template virtual table, leading to a
  186.             successful link, but a program abort at runtime
  187.             (237079).
  188.  
  189.           +o Virtual tables of template classes and global template
  190.             functions would cause "duplicate" warning messages from
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.             the linker (220855).
  207.  
  208.           +o Instantiation loop (generating templates) and compiler
  209.             abort when "-non_shared" is specified.
  210.  
  211.           +o The compiler would auto-include a file again even if it
  212.             was explicitly included, if the only reference to a
  213.             template in the file is through a specialization
  214.             (238664, 246513).
  215.  
  216.        _S_y_m_b_o_l_i_c _D_e_b_u_g _I_n_f_o_r_m_a_t_i_o_n
  217.  
  218.           +o CC generates bad symbolic debug line numbers for
  219.             "default" statements that are not at the end of switch
  220.             statements (227807).
  221.  
  222.           +o CC puts out incorrectly scoped symbolic debug
  223.             information for a struct nested inside a function: even
  224.             external types that it uses inside the struct are
  225.             dumped within the scope of that struct, which confuses
  226.             the debugger badly (249721, 253545)
  227.  
  228.           +o Symbolic debug information would sometimes not get
  229.             emitted for nested types (especially if the only
  230.             references to this type are within a function body)
  231.             (223812).
  232.  
  233.        _S_m_a_r_t _B_u_i_l_d
  234.  
  235.           +o The ClearCase configuration record for a target is
  236.             mangled if -smart is used, and "DCC -smart"
  237.             successfully "quick-checks" the target (i.e. it quickly
  238.             decides it wants to do nothing) (234338).
  239.  
  240.           +o Smart Build aborts if a function is declared inside a
  241.             body in one header file, and defined in another include
  242.             file included afterwards (220368).
  243.  
  244.           +o Smart Build fails to handle some function bodies that
  245.             it reads back from precompiled header files (it "loses
  246.             track" of them), causing them not to get emitted (and
  247.             in some cases, causing class information and virtual
  248.             tables also not to be generated if this function was
  249.             the first non-inline member function of a class)
  250.             (220916).
  251.  
  252.           +o Smart Build gets confused when reading back a
  253.             precompiled header with a struct and a function of the
  254.             same name (e.g. "socket" from <socket.h>) (220618).
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.           +o Smart Build aborts on static class objects initialized
  273.             with default initializer values to the constructor
  274.             (236064).
  275.  
  276.           +o Smart Build crashes on a relation expression in a
  277.             preprocessor "#if" statement (238229).
  278.  
  279.           +o "NCC -smart" (C++) aborts when reading a precompiled
  280.             header produced by a run of "ncc -smart" (C). We now
  281.             rebuild the precompiled header if the language is
  282.             different (221682).
  283.  
  284.           +o Smart Build aborts if the -F flag is specified (NCC
  285.             -smart -F). This combination has been disabled: the -F
  286.             is ignored if -smart is specified (220417).
  287.  
  288.           +o Smart Build fails to recompile a file if a new
  289.             command-line -D is specified (229537).
  290.  
  291.           +o Incorrect source lines reported for syntax errors in
  292.             precompiled header files (238489).
  293.  
  294.        _S_t_a_t_i_c _A_n_a_l_y_s_i_s _D_a_t_a_b_a_s_e _g_e_n_e_r_a_t_i_o_n
  295.  
  296.           +o NCC -sa should add the magic line "-cvstatic" to a
  297.             newly-created cvstatic.fileset file (220509).
  298.  
  299.           +o NCC -sa records an implicit function call twice
  300.             (220796).
  301.  
  302.           +o NCC does not handle the -MDtarget option correctly (the
  303.             target is wrong in the Makedepend file) (218617).
  304.  
  305.           +o NCC is missing the "-nofilt" option from cfront
  306.             (226359).
  307.  
  308.  
  309.        1.4  _S_u_b_s_y_s_t_e_m_s__I_n_c_l_u_d_e_d__i_n__P_a_t_c_h__S_G_0_0_0_0_1_6_4
  310.  
  311.        This patch release includes these subsystems:
  312.  
  313.           +o patchSG0000164.DeltaCC_sw.compiler
  314.  
  315.  
  316.        1.5  _I_n_s_t_a_l_l_a_t_i_o_n__I_n_s_t_r_u_c_t_i_o_n_s
  317.  
  318.        Because you want to install patches for only the problems
  319.        you have encountered, patch software is not installed by
  320.        default. After reading the descriptions of the bugs fixed in
  321.        this patch, determine the patches that meet your specific
  322.        needs.
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.        Patch software is installed like any other Silicon Graphics
  339.        software product.  It must be installed from the miniroot.
  340.        Follow the instructions in your _I_R_I_S _S_o_f_t_w_a_r_e _I_n_s_t_a_l_l_a_t_i_o_n
  341.        _G_u_i_d_e to bring up the miniroot form of the software
  342.        installation tools.
  343.  
  344.        Follow these steps to select a patch for installation:
  345.  
  346.          1.  At the Inst>prompt, type
  347.  
  348.              iiiinnnnssssttttaaaallllllll ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
  349.  
  350.              where _x_x_x_x_x_x_x is the patch number.
  351.  
  352.          2.  Select the desired patches for installation.
  353.  
  354.          3.  Initiate the installation sequence. Type
  355.  
  356.              IIIInnnnsssstttt>>>> ggggoooo
  357.  
  358.          4.  You may find that two patches have been marked as
  359.              incompatible.  If this occurs, you must deselect one
  360.              of the patches.
  361.  
  362.              IIIInnnnsssstttt>>>> kkkkeeeeeeeepppp ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
  363.  
  364.              where _x_x_x_x_x_x_x is the patch number.
  365.  
  366.          5.  After completing the installation process, exit the
  367.              _i_n_s_t program by typing
  368.  
  369.              IIIInnnnsssstttt>>>> qqqquuuuiiiitttt
  370.  
  371.  
  372.        To remove a patch, use the _v_e_r_s_i_o_n_s _r_e_m_o_v_e command as you
  373.        would for any other software subsystem.  The removal process
  374.        reinstates the original version of software unless you have
  375.        specifically removed the patch history from your system.
  376.  
  377.        vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeee ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
  378.  
  379.        where _x_x_x_x_x_x_x is the patch number.
  380.  
  381.        To keep a patch but increase your disk space, use the
  382.        _v_e_r_s_i_o_n_s _r_e_m_o_v_e_h_i_s_t command to remove the patch history.
  383.  
  384.        vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeeehhhhiiiisssstttt ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
  385.  
  386.        where _x_x_x_x_x_x_x is the patch number.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.